ÀÌ ¼½¼ÇÀº Move Members ¸®ÆÑÅ丵 À§¿¡¼ ´ç½Å¿¡°Ô Æ÷°ýÀûÀÎ overview¸¦ Á¦°øÇϰí how ÀÌ ¸®ÆÑÅ丵ÀÌ IntelliJ
IDEA¿¡¼ »ç¿ëµÉ ¼ö Àִ°¡¸¦ Á¦°øÇÕ´Ï´Ù.
IDEA¿¡¼, ÀÌ ¸®ÆÑÅ丵À» »ç¿ëÇÏ¸é ´ç½ÅÀº Á¤ÀûÀÎ Çʵå, ¸Þ¼Òµå ¶Ç´Â ³»ºÎ Ŭ·¡½º¸¦ ¶Ç ´Ù¸¥ Ŭ·¡½ºÀÇ ÂÊÀ¸·Î ¿Å±é´Ï´Ù. ±× °á°ú·Î, Á¤ÀûÀÎ ¸Þ¼Òµå, ÇÊµå ¶Ç´Â ³»ºÎ Ŭ·¡½º´Â ¶Ç ´Ù¸¥ À§Ä¡·Î ¿Å°ÜÁö°í »óÀÀÇÏ´Â ÂüÁ¶´Â ¾÷µ¥ÀÌÆ®µË´Ï´Ù.
¿¹¸¦ µé¸é, ¿ì¸®´Â ´ÙÀ½ Ŭ·¡½º¸¦ °¡Áý´Ï´Ù:
public class AClass {
public static void methodA() {
//some code here
}
public void methodB() {
//some code here
methodA();
}
}
±×¸®°í ´ç½ÅÀº Á¤ÀûÀÎ methodA ¸¦ AnotherClass ·Î À̵¿ÇÏ´Â °ÍÀ» °áÁ¤ÇÕ´Ï´Ù, ±×°ÍÀº À̰Ͱú °°ÀÌ º¸ÀÔ´Ï´Ù:
public class AnotherClass {
}
±×¸®°í À̰ÍÀº ´ç½ÅÀÇ Å¬·¡½º°¡ ¸®ÆÑÅ丵À» µ¹ºÁÁÙ ¹æ¹ýÀÔ´Ï´Ù:
public class AClass {
public void methodB() {
//some code here
AnotherClass.methodA();
}
}
...
public class AnotherClass {
public static void methodA() {
//some code here
}
}
Ŭ·¡½º ¸â¹ö¸¦ ¿Å±â±â À§Çؼ:
1. Project º¸±â¿¡¼:
Á¤ÀûÀÎ Çʵå/¸Þ¼Òµå/³»ºÎ Ŭ·¡½º¸¦ ¼±ÅÃÇϰí Ŭ·¡½º ¸â¹ö¸¦ ¿À¸¥ÂÊ ¹öư Ŭ¸¯ÇÏ´Â °Í¿¡ ÀÇÇØ ºÒ·ÁÁö´Â ÆË¾÷ ¸Þ´º ¿¡¼ Refactor |
Move... ¸¦ Ŭ¸¯ÇϽʽÿÀ.

|
´ç½ÅÀº ¸Þ¼Òµå, ÇÊµå ¶Ç´Â ³»ºÎ Ŭ·¡½º¸¦ ¼±ÅÃÇϱâ À§ÇØ ¾î¶² ´Ù¸¥ º¸±â¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù, ¿¹¸¦ µé¸é Structure.
|
editor ¿¡¼ :
À̵¿ÇÏ°Ô µÉ Á¤ÀûÀÎ Çʵå/¸Þ¼Òµå/³»ºÎ Ŭ·¡½º¿¡¼ ij·µÀ» ¼±ÅÃÇϰí ÁÖ ¸Þ´º¿¡¼ ¶Ç´Â ¿¡µðÅÍ¿¡¼ ¿À¸¥ÂÊ ¹öưÀ» Ŭ¸¯ÇÏ´Â °Í¿¡ ÀÇÇØ ºÒ·ÁÁö´Â ÆË¾÷ ¸Þ´º ¿¡¼ Refactor
| Move...¸¦ Ŭ¸¯ÇϽʽÿÀ.

|
´ç½ÅÀÌ Á¤ÀûÀÎ ³»ºÎ Ŭ·¡½º¸¦ ¿Å±â·Á°í Çϰí ÀÖÀ» ¶§, ¼±ÅÃÇÑ ³»ºÎ Ŭ·¡½º¸¦ À§ÇØ ¸®ÆÑÅ丵À» ¼±ÅÃÇÏ¸é ´ç½ÅÀº ´ÙÀ½ÀÇ ´ÙÀ̾ó·Î±×¸¦ º¼ °ÍÀÔ´Ï´Ù:
|

¸¸ÀÏ ³»ºÎ Ŭ·¡½º°¡ »óÀ§ ¼öÁØÀ¸·Î ¿Å°ÜÁö¸é Move Inner to Upper ¸®ÆÑÅ丵À» º¸½Ê½Ã¿À.
2. Move
Members ´ÙÀ̾ó·Î±×°¡ ³ªÅ¸³³´Ï´Ù:

Move members
from
|
ÀÌ Çʵå´Â ¾î´À ¸â¹ö°¡ ¿Å°ÜÁö´ÂÁö Ŭ·¡½º¿¡ º¸¿©ÁÝ´Ï´Ù.
|
To (fully qualified
name):
|
¿©±â¿¡¼ ´ç½ÅÀº Ÿ°Ù Ŭ·¡½ºÀÇ ¿ÏÀü ¼ö½ÄµÈ À̸§À» »ý¼ºÇÒ ¼ö Àְųª, ellipsis¹öưÀ» ´·¯¼ ÇÊ¿äÇÑ Å¸°Ù Ŭ·¡½º¸¦ ¹ß°ßÇϵµ·Ï Choose
Destination Class ´ÙÀ̾ó·Î±×¸¦ ºÎ¸¦ ¼ö ÀÖ½À´Ï´Ù:


|
¸¸ÀÏ ±×·± À̸§ÀÌ ÀÖ´Â ¾î¶² Ŭ·¡½ºµµ ¾øÀ¸¸é
IDEA´Â »õ·Î¿î Ŭ·¡½º¸¦ »ý¼ºÇÒ °ÍÀ» Á¦¾ÈÇÒ °ÍÀÔ´Ï´Ù.
|
|
Members to be
moved (static only)
|
ÀÌ ¸ñ·Ï¿¡¼ ´ç½ÅÀº »óÀÀÇϴ üũ ¹Ú½º¸¦ ¼±ÅÃÇÏ´Â °Í¿¡ ÀÇÇØ À̵¿µÇ´Â Ŭ·¡½º ¸â¹ö¸¦ ¼±ÅÃÇÒ ¼ö ÀÖ½À´Ï´Ù.
|
Preview usages to
be changed
|
ÀÌ Ã¼Å© ¹Ú½º¸¦ ¼±ÅÃÇÏ¸é ´ç½ÅÀº ¾î¶² »ç¿ëÀÌ ¹ß°ßµÇ¾ú´ÂÁö ÃßÀûÇϰí, ±×µéÀÇ ±³Ã¼¸¦ ½ÂÀÎÇϵµ·Ï Çã¶ôÇÕ´Ï´Ù. ÀÌ Ã¼Å© ¹Ú½º°¡ ¼±ÅõÇÁö ¾ÊÀ» ¶§, IDEA´Â ±³Ã¼ ±â´É¸¦ ÀÚµ¿ÀûÀ¸·Î ¼öÇàÇÕ´Ï´Ù.

|
½ÉÁö¾î üũ ¹Ú½º°¡ ¼±ÅõÇÁö ¾Ê¾ÒÀ» ¶§µµ, ¸¸ÀÏ ¹ß°ßµÈ »ç¿ëÀÌ ¾î¶² Àбâ Àü¿ë ÆÄÀÏ¿¡¼ Á¸ÀçÇÏ¸é ±³Ã¼ »ç¿ëÀ» È®ÀÎÇÏ´Â ÇÁ·ÒÇÁÆ®°¡ ´ç½Å¿¡ ´ë±âµÉ °Í ÀÔ´Ï´Ù.
|
Refactoring
Preview ´ÙÀ̾ó·Î±×¿¡¼ (¸¸ÀÏ ±×°ÍÀÌ ³ªÅ¸³ª¸é) ´ç½ÅÀº ¼öÇàµÈ º¯°æÀ» ºÐ¼®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸®ÆÑÅ丵°ú ÇÔ²² ÁøÇàÇϱâ À§Çؼ, Do
Refactor¸¦ Ŭ¸¯ÇÕ´Ï´Ù, ±×·¸Áö ¾Ê´Ù¸é Cancel À» Ŭ¸¯ÇÕ´Ï´Ù. »ó¼¼ÇÑ °ÍÀ» º¸·Á¸é Refactoring
Preview¸¦ º¸½Ê½Ã¿À.
|
|
3. OK¸¦ ´©¸¨´Ï´Ù, ±×¸®°í ¿øÇÏ´Â ¸â¹ö´Â À̵¿µÉ °ÍÀÔ´Ï´Ù.
4. ¸â¹ö¸¦ À̵¿ÇÏ·Á°í ½ÃµµÇϸé, ´ç½ÅÀÌ Á¤ÀûÀÎ ¸Þ¼Òµå/Çʵå/³»ºÎ Ŭ·¡½º(¿¹¸¦ µé¸é ±×µéÀº °³ÀÎÀû ¶Ç´Â ·ÎÄà ÆÐŰÁö°¡ µÉ ¼ö ÀÖ½À´Ï´Ù)¸¦ À̵¿Çϱ⸦ ¿øÇÒ ¶§ ´ç½ÅÀº ´Ù¸¥ ¸Þ¼Òµå ¶Ç´Â ³»ºÎ Ŭ·¡½º(¿¹¸¦ µé¸é, °³ÀÎÀûÀÎ ¶Ç´Â ·ÎÄà ÆÐŰÁö)¿¡¼ ±×¸®°í ±×µéÀÇ ¼Ò½º À§Ä¡¸¦ ó¸®ÇÏÁö¸¸ ¸®ÆÑÅ丵 ÈÄ¿¡ ±×°÷¿¡¼ º¸ÀÌÁö ¾ÊÀ» ¹Ý´ë¿¡¼ ¿µÇâÀ» ¹Þ´Â Á¤ÀûÀÎ ¸Þ¼Òµå/Çʵå/³»ºÎ Ŭ·¡½º°¡ Àç À§Ä¡ÇÏ·Á°í ÇÏ´Â ¹®Á¦¿¡ ºÎµúÄ¥Áöµµ ¸ð¸¨´Ï´Ù. ±×¸®°í °ü·ÃµÈ ÄÚµå´Â À̵¿µÇÁö ¾Ê½À´Ï´Ù
¿¹¸¦ µé¸é:
public class AClass {
private static int a = 0;
public static void f1(){
a = 1;
f2();
}
private static void f2(){
//some code here
}
}
¿©±â ´ç½ÅÀÌ ¸Þ¼Òµå f2()°¡ ¾Æ´Ñ ¸Þ¼Òµå f1() À» À̵¿½ÃŰ·Á°í ÇÕ´Ï´Ù .
±×¶§ ´ÙÀ½ÀÇ Problems Detected ´ÙÀ̾ó·Î±×°¡ ³ªÅ¸³³´Ï´Ù .

¸¸ÀÏ ´ç½ÅÀÌ Cancel (µðÆúÆ®)¸¦ ´©¸£¸é, ´ç½ÅÀº Move
Members ´ÙÀ̾ó·Î±×¿¡¼ µÚ·Î °¥ °ÍÀÔ´Ï´Ù. °Å±â¼ ´ç½ÅÀº °¡´ÉÇÑ ¼Ö·ç¼ÇÀ» À§ÇØ Å½»öÇÒ ¼ö ÀÖ½À´Ï´Ù:
Àǽɽº·¯¿î ¸â¹ö¸¦ À̵¿ÇÏÁö ¾Ê½À´Ï´Ù(¿©±â- f1());
¶ÇÇÑ ¸â¹ö¿Í °ü·ÃµÈ ´Ù¸¥ °ÍÀ» À̵¿ÇÕ´Ï´Ù. (¿©±â- f2() )l;
Move Members ¸®ÆÑÅ丵À» Ãë¼ÒÇϰí, ´ç½ÅÀÇ Äڵ带 ¼öµ¿À¸·Î Á¤Á¤Çϰí, ¿øÇÏ´Â ¸â¹ö¸¦ ´Ù½Ã ¿Å±â·Á°í ÇÕ´Ï´Ù.
¸¸ÀÏ ´ç½ÅÀÌ Continue¸¦ ´©¸£¸é, ¿øÇÏ´Â ¸â¹ö´Â ¿Å°ÜÁú °ÍÀÌÁö¸¸ ÄÄÆÄÀÏ Çϱâ À§Çؼ ´ç½ÅÀº Äڵ带 ¼öµ¿À¸·Î °¡Áö°í ÀÖÀ» °ÍÀÔ´Ï´Ù.
|